[Amazon FSx for NetApp ONTAP] ONTAP S3 の マルチプロトコルアクセスを試してみた
Storage GatewayみたいにSMBやNFSでS3上のデータを操作したい
こんにちは、のんピ(@non____97)です。
皆さんはStorage GatewayみたいにSMBやNFSでS3上のデータを操作したいしたいなと思ったことはありますか? 私はあります。
その願いはONTAP S3のマルチプロトコルアクセス(Data Duality)で少しだけ叶えることができます。
こちらはONTAP 9.12.1から追加された機能で、Amazon FSx for NetApp ONTAP(以降FSxN)上でS3に対応したマルチプロトコルでアクセス可能なボリュームを作成が可能となります。
ざっくりとした概要は以下記事でも紹介しているので、ご覧ください。
この記事ではONTAP S3とONTAP S3のData Dualityについて、もう少し深掘りします。
いきなりまとめ
- ONTAP S3はONTAP上で動作するAmazon S3互換のオブジェクトストレージ
- 通常のS3バケットと異なり、アクセス時にエンドポイントURLを指定する必要がある
- サポートされているS3のAPIや連携可能なONTAPの機能は事前に確認しておこう
- NFSやSMBでアクセス可能なボリュームに対して、S3でのアクセスも可能
- NFS/SMB/S3と異なるプロトコルでアクセスが必要なデータを、それぞれのプロトコルにコピーするという手間がなくなる
- マルチプロトコルを有効化しているONTAP S3のS3バケットにS3のAPIでアクセスする際はネームマッピングが必要
ONTAP S3とは
概要
ONTAP S3とは「ONTAP上で動作するAmazon S3互換のオブジェクトストレージ」のことです。
以下スライドのように、FSxNが既存のS3バケットと連携するのではなく、FSxN上でS3互換のオブジェクトストレージが動作します。
ONTAP S3のバケットの実態はFlexGroupです。FlexGroupの詳細は以下記事をご覧ください。
アクセス方法
通常、ONTAP S3のS3バケットを含むFlexGroupボリュームへのNFSやSMBを使ったアクセスは許可されていません。
アクセスする際はS3のAPIを使用します。その時はONTAP S3上で発行されたユーザーのアクセスキーとシークレットアクセスキーを使用します。
また、アクセスする際はエンドポイントURLとして、FSxNのSVMの管理エンドポイントを指定する必要があります。
そのため、AWSのマネージドサービスとの連携は少し不得手です。ALBのアクセスログをFSxN上のS3バケットに指定するといったことはできません。
ONTAP S3でサポートしているS3のAPI
ONTAP S3はS3互換のストレージであるため、多くのS3 REST APIをサポートしています。
以下NetApp公式ドキュメントにONTAP S3でサポートしているS3のAPIが記載されているので、チェックしてみてください。
ONTAP S3がサポートしているONTAPの機能
ONTAP S3でStorage Efficiencyを効かせたり、QoSを設定することは可能です。
ただし、Snapshotの取得やFlexCloneの作成などはできません。
どの機能がサポートされていて、どの機能がサポートされていないかは以下NetApp公式ドキュメントに記載があります。
ONTAP S3の設定フロー
FSxNにおいて、ONTAP S3を設定する際のフローは以下の通りです。
- object-store-server の作成
- ONTAP S3のユーザーの作成
- ONTAP S3のグループの作成と権限の割り当て
- ONTAP S3のバケットの作成
実際の作成手順は以下NetApp公式ドキュメントをご覧ください。
ONTAP S3のData Dualityとは
概要
ONTAP S3のData Dualityとは、NFSやSMBでアクセス可能なボリュームに対して、S3でのアクセスも可能とする機能です。
この機能によって、NFS/SMB/S3と異なるプロトコルでアクセスが必要なデータを、それぞれのプロトコルにコピーするという手間がなくなります。
ユースケースとして「NFSクライアントから収集したデータをS3を中心としたデータ分析基盤と連携する」などが挙げられます。NetApp公式ドキュメントではAWS SageMakerとの連携が紹介されていました。
また、S3 APIのみの場合はオブジェクトの一部を編集する場合は「オブジェクトのダウンロード」→「編集」→「アップロード」のステップが必要でしたが、NFSやSMBを使えば直接編集が可能になります。
ONTAP S3のData Dualityのポイントは「既存のONTAP S3バケットに対してNFSやSMBによるアクセスを追加する」のではなく、「既存のNFSやSMBボリュームに対してONTAP S3のバケットをマッピングする」ところです。主体はNFSやSMBのボリュームとなります。
アクセス方法
マルチプロトコルを有効化しているONTAP S3のS3バケットにS3のAPIでアクセスする際は、NFSとSMBのマルチプロトコルアクセスを実現するときと同様にネームマッピングが必要となります。S3からNFS、S3からSMBどちらのプロトコルへのネームマッピングも可能です。
ネームマッピングの詳細は以下記事とNetAppのKBをご覧ください。
制約事項と通常のONTAP S3との違い
NFSやSMBのボリュームに対してS3アクセスを許可している形であるため、通常のONTAP S3と制約事項が異なります。
例えば、以下のようなものが挙げられます。
- Snapshotの取得および、SnapMirrorによるデータ転送が可能
- S3のアクセス監査は行うことができない
- プレフィックスが
x-amz-meta
のリクエストヘッダーは無視される - PUT ObjectとMultipart Initiateでプレフィックスが
x-amz-tagging
のヘッダーは無視される - 既存のファイルでタグを更新するリクエストは拒否される
- バージョン管理をバケットのマッピング設定で指定することはできない
- マルチパート関連の処理はサポートされていない
- S3の名前は1024 Byteに制限されているため、長いパス名を持つファイルにS3 APIを使用してアクセスすることはできない
- ファイル名とディレクトリ名は255文字に制限されているため、オブジェクト名として連続する255文字以外の文字(
/
)を使用できない - バックスラッシュで区切られたSMBパス名は、S3上ではスラッシュではなく、オブジェクト名として認識される
- 有効なS3オブジェクト名のペアの一部は、マッピングされたNASディレクトリツリーに共存できない
ONTAP S3のData Duality設定フロー
FSxNにおいて、ONTAP S3のData Dualityを設定する際のフローは以下の通りです。
- ボリュームの作成
- NFS or SMBのサーバー起動 & ファイル共有の作成
- object-store-server の作成
- ONTAP S3のユーザーの作成
- ONTAP S3のグループの作成と権限の割り当て
- ONTAP S3のユーザーとNFS or SMBユーザーのネームマッピング
- ONTAP S3のバケットの作成
実際の作成手順は以下NetApp公式ドキュメントをご覧ください。
通常のONTAP S3のS3バケットを作成してみる
証明書の発行
ONTAP S3のS3バケットにHTTPSで通信してみたかったので証明書を用意します。
ONTAP上で認証局を立てることができるので自己署名証明書を作成します。
FSxN上でデフォルトでインストールされている証明書は以下のとおりです。
::> security certificate show Vserver Serial Number Certificate Name Type ---------- --------------- -------------------------------------- ------------ FsxId03e6b8146fca5e858 3F864DC175CE5787F29AF1517E121B21 clientCa1 client-ca Certificate Authority: Amazon FSx Root CA 1 for us-east-1 Expiration Date: Wed Aug 08 21:15:27 3021 FsxId03e6b8146fca5e858 3F864DC175CE5787F29AF1517E121B21 serverCa1 server-ca Certificate Authority: Amazon FSx Root CA 1 for us-east-1 Expiration Date: Wed Aug 08 21:15:27 3021 FsxId03e6b8146fca5e858 FC86BD1526879B4A02CA2CFD832BB379 clientCa0 client-ca Certificate Authority: Amazon FSx Root CA 1 for us-east-1 Expiration Date: Sun Aug 21 14:19:16 2033 FsxId03e6b8146fca5e858 FC86BD1526879B4A02CA2CFD832BB379 serverCa0 server-ca Certificate Authority: Amazon FSx Root CA 1 for us-east-1 Expiration Date: Sun Aug 21 14:19:16 2033 svm 1790EA6BFE4A853C svm_1790EA6BFE4A853C server Certificate Authority: svm Expiration Date: Wed Oct 23 02:33:29 2024 5 entries were displayed.
まず、CAを作成します。
CAを作成する際はsecurity certificate createの-type
でroot-ca
を指定します。
# CAの作成 ::> security certificate create -vserver svm -type root-ca -common-name svm_ca The certificate's generated name for reference: svm_ca_1794ADFCA608B978_svm_ca # 作成した証明書の確認 ::> security certificate show -common-name svm_ca Vserver Serial Number Certificate Name Type ---------- --------------- -------------------------------------- ------------ svm 1794ADFCA608B978 svm_ca_1794ADFCA608B978_svm_ca root-ca Certificate Authority: svm_ca Expiration Date: Mon Nov 04 08:51:00 2024 svm 1794ADFCA608B978 svm_ca_1794ADFCA608B978 client-ca Certificate Authority: svm_ca Expiration Date: Mon Nov 04 08:51:00 2024 svm 1794ADFCA608B978 svm_ca server-ca Certificate Authority: svm_ca Expiration Date: Mon Nov 04 08:51:00 2024 3 entries were displayed. # 作成した証明書の詳細の確認 ::> security certificate show -common-name svm_ca -instance Vserver: svm Certificate Name: svm_ca_1794ADFCA608B978_svm_ca FQDN or Custom Common Name: svm_ca Serial Number of Certificate: 1794ADFCA608B978 Certificate Authority: svm_ca Type of Certificate: root-ca Size of Requested Certificate(bits): 2048 Certificate Start Date: Sun Nov 05 08:51:00 2023 Certificate Expiration Date: Mon Nov 04 08:51:00 2024 Public Key Certificate: -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIF5St/KYIuXgwDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDUwODUxMDBaFw0yNDExMDQw ODUxMDBaMB4xDzANBgNVBAMUBnN2bV9jYTELMAkGA1UEBhMCVVMwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHLk9VEkjMeN5SmWz8r7RP90zzWO4mQ/FI E6zZlibcIfS/duCx6a1YHdEfoskjcYE81jnGuH2m+se6T9rxhNVIiqwOmEqCKos/ dxLGHVhjwfWMxp6pAIIqS6KCnPLc2/IldSGNxwYaDT1A2KvTdRtSKCKKR7OkKaqm i+1R17vY/mqdHJbGNTtb1sh4olByYQgNEtg7h1/FW6wkMX8Vs3x7sLge0+SMnDlX mfAYcD12jwsq48XTQbMzfFEnbC1TyLaC4vLVKx+eBbJANKS7XYJ0ehPLbVtjdVZU TGFHR72nEXz+2DUJ3Xbr5dnVq6lmCYSRIj/5Xf4dUYW7CQyCAhsrAgMBAAGjgZIw gY8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAj+ 95pA7ItS677SE2hSDdCRwd2rME0GA1UdIwRGMESAFAj+95pA7ItS677SE2hSDdCR wd2roSKkIDAeMQ8wDQYDVQQDFAZzdm1fY2ExCzAJBgNVBAYTAlVTgggXlK38pgi5 eDANBgkqhkiG9w0BAQsFAAOCAQEAbZ7CL+rDBWiViFVAi/GgcRQnr6e64TWYwWr9 6CZa84fSKpl6K5fvOC4g+nuJsIgDykdNozi4+gAUfROtXvaEOLMMahlImV+4l7bt ZmeEtw/XlS57/qcq7CKweqz+lowvz+KeLc0KcWnRFKhJa78u0vzh7plO53Sy05oy nBbc2cK4Bn9lBCg9IUwLDLp64mHDhsTMmm/riJRMqHw5XXq2+4euaw/sUw3G4B6u a/8XPlhWvSuX9uqpax43jWnEUhq8jg3eUAfHrd7o/eh0Ssv5RV19Sq4Sm9wjBP9T 4Gm8ROcW3c6OWjh7wN01nZdTyXVRexYtOUG023X25HP+BSKimA== -----END CERTIFICATE----- Country Name (2 letter code): US State or Province Name (full name): Locality Name (e.g. city): Organization Name (e.g. company): Organization Unit (e.g. section): Email Address (Contact Name): Protocol: SSL Hashing Function: SHA256 Subtype: - Vserver: svm Certificate Name: svm_ca_1794ADFCA608B978 FQDN or Custom Common Name: svm_ca Serial Number of Certificate: 1794ADFCA608B978 Certificate Authority: svm_ca Type of Certificate: client-ca Size of Requested Certificate(bits): 2048 Certificate Start Date: Sun Nov 05 08:51:00 2023 Certificate Expiration Date: Mon Nov 04 08:51:00 2024 Public Key Certificate: -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIF5St/KYIuXgwDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDUwODUxMDBaFw0yNDExMDQw ODUxMDBaMB4xDzANBgNVBAMUBnN2bV9jYTELMAkGA1UEBhMCVVMwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHLk9VEkjMeN5SmWz8r7RP90zzWO4mQ/FI E6zZlibcIfS/duCx6a1YHdEfoskjcYE81jnGuH2m+se6T9rxhNVIiqwOmEqCKos/ dxLGHVhjwfWMxp6pAIIqS6KCnPLc2/IldSGNxwYaDT1A2KvTdRtSKCKKR7OkKaqm i+1R17vY/mqdHJbGNTtb1sh4olByYQgNEtg7h1/FW6wkMX8Vs3x7sLge0+SMnDlX mfAYcD12jwsq48XTQbMzfFEnbC1TyLaC4vLVKx+eBbJANKS7XYJ0ehPLbVtjdVZU TGFHR72nEXz+2DUJ3Xbr5dnVq6lmCYSRIj/5Xf4dUYW7CQyCAhsrAgMBAAGjgZIw gY8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAj+ 95pA7ItS677SE2hSDdCRwd2rME0GA1UdIwRGMESAFAj+95pA7ItS677SE2hSDdCR wd2roSKkIDAeMQ8wDQYDVQQDFAZzdm1fY2ExCzAJBgNVBAYTAlVTgggXlK38pgi5 eDANBgkqhkiG9w0BAQsFAAOCAQEAbZ7CL+rDBWiViFVAi/GgcRQnr6e64TWYwWr9 6CZa84fSKpl6K5fvOC4g+nuJsIgDykdNozi4+gAUfROtXvaEOLMMahlImV+4l7bt ZmeEtw/XlS57/qcq7CKweqz+lowvz+KeLc0KcWnRFKhJa78u0vzh7plO53Sy05oy nBbc2cK4Bn9lBCg9IUwLDLp64mHDhsTMmm/riJRMqHw5XXq2+4euaw/sUw3G4B6u a/8XPlhWvSuX9uqpax43jWnEUhq8jg3eUAfHrd7o/eh0Ssv5RV19Sq4Sm9wjBP9T 4Gm8ROcW3c6OWjh7wN01nZdTyXVRexYtOUG023X25HP+BSKimA== -----END CERTIFICATE----- Country Name (2 letter code): US State or Province Name (full name): Locality Name (e.g. city): Organization Name (e.g. company): Organization Unit (e.g. section): Email Address (Contact Name): Protocol: SSL Hashing Function: SHA256 Subtype: - Vserver: svm Certificate Name: svm_ca FQDN or Custom Common Name: svm_ca Serial Number of Certificate: 1794ADFCA608B978 Certificate Authority: svm_ca Type of Certificate: server-ca Size of Requested Certificate(bits): 2048 Certificate Start Date: Sun Nov 05 08:51:00 2023 Certificate Expiration Date: Mon Nov 04 08:51:00 2024 Public Key Certificate: -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIF5St/KYIuXgwDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDUwODUxMDBaFw0yNDExMDQw ODUxMDBaMB4xDzANBgNVBAMUBnN2bV9jYTELMAkGA1UEBhMCVVMwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHLk9VEkjMeN5SmWz8r7RP90zzWO4mQ/FI E6zZlibcIfS/duCx6a1YHdEfoskjcYE81jnGuH2m+se6T9rxhNVIiqwOmEqCKos/ dxLGHVhjwfWMxp6pAIIqS6KCnPLc2/IldSGNxwYaDT1A2KvTdRtSKCKKR7OkKaqm i+1R17vY/mqdHJbGNTtb1sh4olByYQgNEtg7h1/FW6wkMX8Vs3x7sLge0+SMnDlX mfAYcD12jwsq48XTQbMzfFEnbC1TyLaC4vLVKx+eBbJANKS7XYJ0ehPLbVtjdVZU TGFHR72nEXz+2DUJ3Xbr5dnVq6lmCYSRIj/5Xf4dUYW7CQyCAhsrAgMBAAGjgZIw gY8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAj+ 95pA7ItS677SE2hSDdCRwd2rME0GA1UdIwRGMESAFAj+95pA7ItS677SE2hSDdCR wd2roSKkIDAeMQ8wDQYDVQQDFAZzdm1fY2ExCzAJBgNVBAYTAlVTgggXlK38pgi5 eDANBgkqhkiG9w0BAQsFAAOCAQEAbZ7CL+rDBWiViFVAi/GgcRQnr6e64TWYwWr9 6CZa84fSKpl6K5fvOC4g+nuJsIgDykdNozi4+gAUfROtXvaEOLMMahlImV+4l7bt ZmeEtw/XlS57/qcq7CKweqz+lowvz+KeLc0KcWnRFKhJa78u0vzh7plO53Sy05oy nBbc2cK4Bn9lBCg9IUwLDLp64mHDhsTMmm/riJRMqHw5XXq2+4euaw/sUw3G4B6u a/8XPlhWvSuX9uqpax43jWnEUhq8jg3eUAfHrd7o/eh0Ssv5RV19Sq4Sm9wjBP9T 4Gm8ROcW3c6OWjh7wN01nZdTyXVRexYtOUG023X25HP+BSKimA== -----END CERTIFICATE----- Country Name (2 letter code): US State or Province Name (full name): Locality Name (e.g. city): Organization Name (e.g. company): Organization Unit (e.g. section): Email Address (Contact Name): Protocol: SSL Hashing Function: SHA256 Subtype: - 3 entries were displayed.
CAの秘密鍵のパスフレーズなどは要求されませんでした。
続いて、ONTAP S3で使用する証明書用のCSRをsecurity certificate generate-csrで作成します。
CNとSANはSVMの管理エンドポイント名とします。これはONTAP S3をサポートしているLIFがnfs_smb_management_1
というLIFでサポートしているためです。
::> network interface show -services data-s3-server -fields services, data-protocol vserver lif services data-protocol ------- -------------------- ------------------------------------------------------------------------------------------- ------------- svm nfs_smb_management_1 data-core,data-nfs,data-cifs,management-ssh,management-https,data-s3-server,data-dns-server nfs,cifs,s3
CSRを作成すると秘密鍵も生成されます。
# CSRの作成 ::> security certificate generate-csr -common-name svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com -dns-name svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com Certificate Signing Request : -----BEGIN CERTIFICATE REQUEST----- MIIDMDCCAhgCAQAwUTFPME0GA1UEAxNGc3ZtLTAwOTNjNGQ1ODIyNWY4MDliLmZz LTAzZTZiODE0NmZjYTVlODU4LmZzeC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJaEP6X54++epdzBhgMZBZhp oXzJ6W+E/Ed85EbF5kljPxTUZs5nt1nkzj6X8tWcIE1hxV+bY3emu4YA4Fuxb1lQ DR1wmNDzNlOI2zhoUjqRPULFLkAasnMOVlxTHp8shGYmrAp/nWBgdjB0S6YYBfWr 95Ci+5PvFWEn8HUJrKdKXc+vcKCjgVW9LdYa3e8tWzgXT3c4zae0i03DK5rBIdLN zTS+ZlqZX7/Q+JvVL0O02/86h6w6A4daLmOtnoal5NdxiH9MkybGqy6Y5dYYizCU JGkLBrdBTzCDn8cfnDw2JjIC1XAcCrxwaX/49oSm/31Ts7jmoj+iyrUoRdEZv1cC AwEAAaCBmTCBlgYJKoZIhvcNAQkOMYGIMIGFMFQGA1UdEQEB/wRKMEiCRnN2bS0w MDkzYzRkNTgyMjVmODA5Yi5mcy0wM2U2YjgxNDZmY2E1ZTg1OC5mc3gudXMtZWFz dC0xLmFtYXpvbmF3cy5jb20wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsG AQUFBwMCBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOCAQEAQYiBzhZkymCjVLkN n/0f/lopmQFsxHPYHxDZhPg93dKRkDxOSe+oJ0NFI85zaLxRyXNYRxNsiAK5nbBd d5kyINJ9KqDbgggiGTnEIpJJR7sFWMxu37689wIGOFZu1Qaqj203K7wD6JxddnXG Z4dOFibhzU2zOfXj1T53vc0ysT9vNLi8JVeKvXPmQtZilWkBTgMCFacmz/4l1IiS G6f30VNVNmuH7j2g8TwZrw0USnMzZ2mwIDdFGewY/vV2bB2ba67RT6/a1qF3StBy PF1XeNzSBSeL3gGg2kPaIXfY8+kZsEGkJ3lw4NNXOUEabQ08GXs4Y3at7yDHUY2i KF2q5g== -----END CERTIFICATE REQUEST----- Private Key : -----BEGIN PRIVATE KEY----- . . (中略) . . -----END PRIVATE KEY----- Note: Please keep a copy of your certificate request and private key for future reference.
security certificate signでCSRに署名して証明書を発行します。署名する際には署名するCAとCSRを入力します。
::> security certificate sign -vserver svm -ca svm_ca -ca-serial 1794ADFCA608B978 -expire-days 3 -format PEM -hash-function SHA256 Please enter Certificate Signing Request(CSR): Press <Enter> when done -----BEGIN CERTIFICATE REQUEST----- MIIDMDCCAhgCAQAwUTFPME0GA1UEAxNGc3ZtLTAwOTNjNGQ1ODIyNWY4MDliLmZz LTAzZTZiODE0NmZjYTVlODU4LmZzeC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJaEP6X54++epdzBhgMZBZhp oXzJ6W+E/Ed85EbF5kljPxTUZs5nt1nkzj6X8tWcIE1hxV+bY3emu4YA4Fuxb1lQ DR1wmNDzNlOI2zhoUjqRPULFLkAasnMOVlxTHp8shGYmrAp/nWBgdjB0S6YYBfWr 95Ci+5PvFWEn8HUJrKdKXc+vcKCjgVW9LdYa3e8tWzgXT3c4zae0i03DK5rBIdLN zTS+ZlqZX7/Q+JvVL0O02/86h6w6A4daLmOtnoal5NdxiH9MkybGqy6Y5dYYizCU JGkLBrdBTzCDn8cfnDw2JjIC1XAcCrxwaX/49oSm/31Ts7jmoj+iyrUoRdEZv1cC AwEAAaCBmTCBlgYJKoZIhvcNAQkOMYGIMIGFMFQGA1UdEQEB/wRKMEiCRnN2bS0w MDkzYzRkNTgyMjVmODA5Yi5mcy0wM2U2YjgxNDZmY2E1ZTg1OC5mc3gudXMtZWFz dC0xLmFtYXpvbmF3cy5jb20wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsG AQUFBwMCBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOCAQEAQYiBzhZkymCjVLkN n/0f/lopmQFsxHPYHxDZhPg93dKRkDxOSe+oJ0NFI85zaLxRyXNYRxNsiAK5nbBd d5kyINJ9KqDbgggiGTnEIpJJR7sFWMxu37689wIGOFZu1Qaqj203K7wD6JxddnXG Z4dOFibhzU2zOfXj1T53vc0ysT9vNLi8JVeKvXPmQtZilWkBTgMCFacmz/4l1IiS G6f30VNVNmuH7j2g8TwZrw0USnMzZ2mwIDdFGewY/vV2bB2ba67RT6/a1qF3StBy PF1XeNzSBSeL3gGg2kPaIXfY8+kZsEGkJ3lw4NNXOUEabQ08GXs4Y3at7yDHUY2i KF2q5g== -----END CERTIFICATE REQUEST----- Signed Certificate : -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIIF5Tjryg+TZ8wDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDYwMTE1MDBaFw0yMzExMDkw MTE1MDBaMFExTzBNBgNVBAMTRnN2bS0wMDkzYzRkNTgyMjVmODA5Yi5mcy0wM2U2 YjgxNDZmY2E1ZTg1OC5mc3gudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20wggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWhD+l+ePvnqXcwYYDGQWYaaF8yelv hPxHfORGxeZJYz8U1GbOZ7dZ5M4+l/LVnCBNYcVfm2N3pruGAOBbsW9ZUA0dcJjQ 8zZTiNs4aFI6kT1CxS5AGrJzDlZcUx6fLIRmJqwKf51gYHYwdEumGAX1q/eQovuT 7xVhJ/B1CaynSl3Pr3Cgo4FVvS3WGt3vLVs4F093OM2ntItNwyuawSHSzc00vmZa mV+/0Pib1S9DtNv/OoesOgOHWi5jrZ6GpeTXcYh/TJMmxqsumOXWGIswlCRpCwa3 QU8wg5/HH5w8NiYyAtVwHAq8cGl/+PaEpv99U7O45qI/osq1KEXRGb9XAgMBAAGj gdMwgdAwVAYDVR0RAQH/BEowSIJGc3ZtLTAwOTNjNGQ1ODIyNWY4MDliLmZzLTAz ZTZiODE0NmZjYTVlODU4LmZzeC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbTAOBgNV HQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMAkGA1Ud EwQCMAAwHQYDVR0OBBYEFKIQJMTwgLjqSi5N3xm6FkR6o6H4MB8GA1UdIwQYMBaA FAj+95pA7ItS677SE2hSDdCRwd2rMA0GCSqGSIb3DQEBCwUAA4IBAQAHKtZnKMya 6p5kuyrc7zLh2Hy7BPh9/HxaDd2a7dFfdG2mEkWJludMfyTzR0CW5pTVGNXOfoN3 azSlhrTEj7FlGMehTVGrc9t6WLpP+WRzsofCZcvoiHutbHwVcifGPTs+cV6FqUbg HxNof34woUYUjLaY/bR2qfL5FGIRl9HuyCYmw0PJMoFDkjE8EBSxQH4zq20BNR/U DtyMdTLkIGNk0+e6fWzGaRCpmDsAu6w9VtDDom4jOsgI8FVLtP7kri/m0Tqts8KS 6IYiinl6rSjrDfuCfGMLGefgn9kSmlYgJulS1Xo5sJkD54NryGaWeln/amgLC9MX J0AEf4F1J9bv -----END CERTIFICATE-----
発行した証明書をsecurity certificate installでSVMにインストールします。インストールする際はCSR作成時に出力された秘密鍵を入力します。
::> security certificate install -type server -vserver svm Please enter Certificate: Press <Enter> when done -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIIF5Tjryg+TZ8wDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDYwMTE1MDBaFw0yMzExMDkw MTE1MDBaMFExTzBNBgNVBAMTRnN2bS0wMDkzYzRkNTgyMjVmODA5Yi5mcy0wM2U2 YjgxNDZmY2E1ZTg1OC5mc3gudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20wggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWhD+l+ePvnqXcwYYDGQWYaaF8yelv hPxHfORGxeZJYz8U1GbOZ7dZ5M4+l/LVnCBNYcVfm2N3pruGAOBbsW9ZUA0dcJjQ 8zZTiNs4aFI6kT1CxS5AGrJzDlZcUx6fLIRmJqwKf51gYHYwdEumGAX1q/eQovuT 7xVhJ/B1CaynSl3Pr3Cgo4FVvS3WGt3vLVs4F093OM2ntItNwyuawSHSzc00vmZa mV+/0Pib1S9DtNv/OoesOgOHWi5jrZ6GpeTXcYh/TJMmxqsumOXWGIswlCRpCwa3 QU8wg5/HH5w8NiYyAtVwHAq8cGl/+PaEpv99U7O45qI/osq1KEXRGb9XAgMBAAGj gdMwgdAwVAYDVR0RAQH/BEowSIJGc3ZtLTAwOTNjNGQ1ODIyNWY4MDliLmZzLTAz ZTZiODE0NmZjYTVlODU4LmZzeC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbTAOBgNV HQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMAkGA1Ud EwQCMAAwHQYDVR0OBBYEFKIQJMTwgLjqSi5N3xm6FkR6o6H4MB8GA1UdIwQYMBaA FAj+95pA7ItS677SE2hSDdCRwd2rMA0GCSqGSIb3DQEBCwUAA4IBAQAHKtZnKMya 6p5kuyrc7zLh2Hy7BPh9/HxaDd2a7dFfdG2mEkWJludMfyTzR0CW5pTVGNXOfoN3 azSlhrTEj7FlGMehTVGrc9t6WLpP+WRzsofCZcvoiHutbHwVcifGPTs+cV6FqUbg HxNof34woUYUjLaY/bR2qfL5FGIRl9HuyCYmw0PJMoFDkjE8EBSxQH4zq20BNR/U DtyMdTLkIGNk0+e6fWzGaRCpmDsAu6w9VtDDom4jOsgI8FVLtP7kri/m0Tqts8KS 6IYiinl6rSjrDfuCfGMLGefgn9kSmlYgJulS1Xo5sJkD54NryGaWeln/amgLC9MX J0AEf4F1J9bv -----END CERTIFICATE----- Please enter Private Key: Press <Enter> when done -----BEGIN PRIVATE KEY----- . . (中略) . . -----END PRIVATE KEY----- Enter certificates of certification authorities (CA) which form the certificate chain of the server certificate. This starts with the issuing CA certificate of the server certificate and can range up to the root CA certificate. Do you want to continue entering root and/or intermediate certificates {y|n}: n You should keep a copy of the private key and the CA-signed digital certificate for future reference. The installed certificate's CA and serial number for reference: CA: svm_ca serial: 1794E3AF283E4D9F The certificate's generated name for reference: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
証明書がインストールされたことを確認します。
::> security certificate show -cert-name svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com Vserver Serial Number Certificate Name Type ---------- --------------- -------------------------------------- ------------ svm 1794E3AF283E4D9F svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com server Certificate Authority: svm_ca Expiration Date: Thu Nov 09 01:15:00 2023 ::> security certificate show -cert-name svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com -instance Vserver: svm Certificate Name: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com FQDN or Custom Common Name: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com Serial Number of Certificate: 1794E3AF283E4D9F Certificate Authority: svm_ca Type of Certificate: server Size of Requested Certificate(bits): 2048 Certificate Start Date: Mon Nov 06 01:15:00 2023 Certificate Expiration Date: Thu Nov 09 01:15:00 2023 Public Key Certificate: -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIIF5Tjryg+TZ8wDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDYwMTE1MDBaFw0yMzExMDkw MTE1MDBaMFExTzBNBgNVBAMTRnN2bS0wMDkzYzRkNTgyMjVmODA5Yi5mcy0wM2U2 YjgxNDZmY2E1ZTg1OC5mc3gudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20wggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWhD+l+ePvnqXcwYYDGQWYaaF8yelv hPxHfORGxeZJYz8U1GbOZ7dZ5M4+l/LVnCBNYcVfm2N3pruGAOBbsW9ZUA0dcJjQ 8zZTiNs4aFI6kT1CxS5AGrJzDlZcUx6fLIRmJqwKf51gYHYwdEumGAX1q/eQovuT 7xVhJ/B1CaynSl3Pr3Cgo4FVvS3WGt3vLVs4F093OM2ntItNwyuawSHSzc00vmZa mV+/0Pib1S9DtNv/OoesOgOHWi5jrZ6GpeTXcYh/TJMmxqsumOXWGIswlCRpCwa3 QU8wg5/HH5w8NiYyAtVwHAq8cGl/+PaEpv99U7O45qI/osq1KEXRGb9XAgMBAAGj gdMwgdAwVAYDVR0RAQH/BEowSIJGc3ZtLTAwOTNjNGQ1ODIyNWY4MDliLmZzLTAz ZTZiODE0NmZjYTVlODU4LmZzeC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbTAOBgNV HQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMAkGA1Ud EwQCMAAwHQYDVR0OBBYEFKIQJMTwgLjqSi5N3xm6FkR6o6H4MB8GA1UdIwQYMBaA FAj+95pA7ItS677SE2hSDdCRwd2rMA0GCSqGSIb3DQEBCwUAA4IBAQAHKtZnKMya 6p5kuyrc7zLh2Hy7BPh9/HxaDd2a7dFfdG2mEkWJludMfyTzR0CW5pTVGNXOfoN3 azSlhrTEj7FlGMehTVGrc9t6WLpP+WRzsofCZcvoiHutbHwVcifGPTs+cV6FqUbg HxNof34woUYUjLaY/bR2qfL5FGIRl9HuyCYmw0PJMoFDkjE8EBSxQH4zq20BNR/U DtyMdTLkIGNk0+e6fWzGaRCpmDsAu6w9VtDDom4jOsgI8FVLtP7kri/m0Tqts8KS 6IYiinl6rSjrDfuCfGMLGefgn9kSmlYgJulS1Xo5sJkD54NryGaWeln/amgLC9MX J0AEf4F1J9bv -----END CERTIFICATE----- Country Name (2 letter code): State or Province Name (full name): Locality Name (e.g. city): Organization Name (e.g. company): Organization Unit (e.g. section): Email Address (Contact Name): Protocol: SSL Hashing Function: SHA256 Subtype: -
object-store-server の作成
次に、object-store-server の作成をします。
object-store-server createでobject-store-server を作成します。
作成する際に事前に用意した証明書を指定します。
::> object-store-server create -object-store-server svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com -is-http-enabled false -is-https-enabled true -certificate-name svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com (vserver object-store-server create) ::> object-store-server show (vserver object-store-server show) Vserver: svm Object Store Server Name: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com Administrative State: up HTTP Enabled: false Listener Port For HTTP: 80 HTTPS Enabled: true Secure Listener Port For HTTPS: 443 Certificate for HTTPS Connections: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com Default UNIX User: pcuser Default Windows User: - Comment:
ONTAP S3のユーザーの作成
ONTAP S3でアクセスする際に使用するユーザーをobject-store-server user createで作成します。
# ユーザーの作成 ::> object-store-server user create -vserver svm -user s3-user (vserver object-store-server user create) # 作成したユーザーの確認 ::> object-store-server user show -instance (vserver object-store-server user show) Vserver Name: svm Object Store Server User Name: root Object Store Server User ID: 0 Object Store Server User Description: Root User Access Key for the Object Store Server User: - Vserver Name: svm Object Store Server User Name: s3-user Object Store Server User ID: 2 Object Store Server User Description: Access Key for the Object Store Server User: XEFD2323G5QAL53VC56C 2 entries were displayed. # シークレットアクセスキーを表示するために advanced に権限レベルを変更 ::> set advanced Warning: These advanced commands are potentially dangerous; use them only when directed to do so by NetApp personnel. Do you want to continue? {y|n}: y # シークレットアクセスキーの確認 ::*> object-store-server user show -instance (vserver object-store-server user show) Vserver Name: svm Object Store Server User Name: root Object Store Server User ID: 0 Object Store Server User Description: Root User Access Key for the Object Store Server User: - Secret Key for the Object Store Server User: - Vserver Name: svm Object Store Server User Name: s3-user Object Store Server User ID: 2 Object Store Server User Description: Access Key for the Object Store Server User: XEFD2323G5QAL53VC56C Secret Key for the Object Store Server User: <省略> 2 entries were displayed. # 権限レベルを元に戻す ::*> set admin
ONTAP S3のグループの作成と権限の割り当て
作成したユーザーにS3バケットへのアクセス権限を付与するために、object-store-server group createでグループを作成します。
# 存在するポリシーの確認 ::> object-store-server policy show (vserver object-store-server policy show) Vserver Name Is Read-Only Comment ----------- ------------------ ------------ ---------------- svm FullAccess true Read Only Policy: To allow full access to S3 resources svm NoS3Access true Read Only Policy: To deny access to all S3 resources svm ReadOnlyAccess true Read Only Policy: To allow read-only access to S3 resources 3 entries were displayed. # グループの作成 ::> object-store-server group create -name s3-group-fullaccess -users s3-user -policies FullAccess (vserver object-store-server group create) # 作成したグループの確認 ::> object-store-server group show (vserver object-store-server group show) Vserver Group ID Group Name Users Policies ----------- --------- -------------- ---------------- ------------------- svm 2 s3-group-fullaccess s3-user FullAccess ::> object-store-server group show -instance (vserver object-store-server group show) Vserver Name :svm Group ID :2 Group Name :s3-group-fullaccess Users :s3-user Policies :FullAccess Comment :
グループにアタッチするポリシーは既に存在するFullAccess
を使用しましたが、object-store-server policy createとobject-store-server policy statement createを使ってポリシーを新規に作成することも可能です。
::> vserver object-store-server policy statement create -vserver vs1 -policy Policy_1 -effect allow -actions GetObject,PutObject,DeleteObject,ListBucket,GetBucketAcl,GetObjectAcl,ListAllMyBuckets,GetBucketLocation -resource bucket1/* -sid "FullAccesToBucket1"
ONTAP S3のバケットの作成
ONTAP S3のバケットをobject-store-server bucket createで作成します。
::> object-store-server bucket create -vserver svm -bucket ontap-s3-bucket -type s3 -versioning-state enabled -comment "" (vserver object-store-server bucket create) [Job 224] Job succeeded: Successful ::> object-store-server bucket show -bucket ontap-s3-bucket (vserver object-store-server bucket show) Vserver Bucket Type Volume Size Encryption Role NAS Path ----------- --------------- -------- ----------------- ---------- ---------- ---------- ---------- svm ontap-s3-bucket s3 fg_oss_1699177255 800GB false standalone - ::> object-store-server bucket show -bucket ontap-s3-bucket -instance (vserver object-store-server bucket show) Vserver: svm Bucket :ontap-s3-bucket Type :s3 Versioning :enabled Uuid :6eb04d3e-7bbf-11ee-9f74-d3a6f7a64800 Volume :fg_oss_1699177255 Size :800GB Logical Used Size :0B Object Count :0 Encryption :false Comment : Qos Policy Group :- Role :standalone Bucket Protected :false Bucket Protected On ONTAP :false Bucket Protected On Cloud :false Bucket Protected on External Cloud :false NAS Path :- Object Lock retention mode :no-lock
S3バケットのボリュームはFlexGroupです。以下コマンドで確かにFlexGroupであることを確認しておきます。
::> vol show -volume fg_oss_1699177255* -is-constituent true Vserver Volume Aggregate State Type Size Available Used% --------- ------------ ------------ ---------- ---- ---------- ---------- ----- svm fg_oss_1699177255__0001 aggr1 online RW 862.3GB 818.7GB 0% svm fg_oss_1699177255__0002 aggr1 online RW 862.3GB 818.7GB 0% 2 entries were displayed.
動作確認
動作確認をします。
S3ユーザーのアクセスキーとシークレットアクセスキーを登録します。
$ aws configure AWS Access Key ID [None]: XEFD2323G5QAL53VC56C AWS Secret Access Key [None]: <省略> Default region name [None]: us-east-1 Default output format [None]: yaml
エンドポイントとしてSVMの管理エンドポイントを指定して、s3 ls
を叩いてみます。
$ aws s3 ls \ --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com SSL validation failed for https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com/ [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1129)
証明書でエラーになりましたね。
サーバー証明書を検証できるようにCAの証明書をクライアントにインポートしてあげましょう。
# 証明書を配置するディレクトリの確認 $ ls -l /usr/share/pki/ca-trust-source/ total 2308 -rw-r--r--. 1 root root 937 Aug 15 18:20 README drwxr-xr-x. 2 root root 6 Aug 15 18:22 anchors drwxr-xr-x. 2 root root 6 Aug 15 18:22 blacklist drwxr-xr-x. 2 root root 6 Aug 15 18:22 blocklist -rw-r--r--. 1 root root 2357361 Aug 15 18:20 ca-bundle.trust.p11-kit $ ls -l /usr/share/pki/ca-trust-source/anchors/ total 0 # CAの証明書を保存 $ sudo vi /usr/share/pki/ca-trust-source/anchors/svm_ca.pem $ cat /usr/share/pki/ca-trust-source/anchors/svm_ca.pem -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIF5St/KYIuXgwDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDUwODUxMDBaFw0yNDExMDQw ODUxMDBaMB4xDzANBgNVBAMUBnN2bV9jYTELMAkGA1UEBhMCVVMwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHLk9VEkjMeN5SmWz8r7RP90zzWO4mQ/FI E6zZlibcIfS/duCx6a1YHdEfoskjcYE81jnGuH2m+se6T9rxhNVIiqwOmEqCKos/ dxLGHVhjwfWMxp6pAIIqS6KCnPLc2/IldSGNxwYaDT1A2KvTdRtSKCKKR7OkKaqm i+1R17vY/mqdHJbGNTtb1sh4olByYQgNEtg7h1/FW6wkMX8Vs3x7sLge0+SMnDlX mfAYcD12jwsq48XTQbMzfFEnbC1TyLaC4vLVKx+eBbJANKS7XYJ0ehPLbVtjdVZU TGFHR72nEXz+2DUJ3Xbr5dnVq6lmCYSRIj/5Xf4dUYW7CQyCAhsrAgMBAAGjgZIw gY8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAj+ 95pA7ItS677SE2hSDdCRwd2rME0GA1UdIwRGMESAFAj+95pA7ItS677SE2hSDdCR wd2roSKkIDAeMQ8wDQYDVQQDFAZzdm1fY2ExCzAJBgNVBAYTAlVTgggXlK38pgi5 eDANBgkqhkiG9w0BAQsFAAOCAQEAbZ7CL+rDBWiViFVAi/GgcRQnr6e64TWYwWr9 6CZa84fSKpl6K5fvOC4g+nuJsIgDykdNozi4+gAUfROtXvaEOLMMahlImV+4l7bt ZmeEtw/XlS57/qcq7CKweqz+lowvz+KeLc0KcWnRFKhJa78u0vzh7plO53Sy05oy nBbc2cK4Bn9lBCg9IUwLDLp64mHDhsTMmm/riJRMqHw5XXq2+4euaw/sUw3G4B6u a/8XPlhWvSuX9uqpax43jWnEUhq8jg3eUAfHrd7o/eh0Ssv5RV19Sq4Sm9wjBP9T 4Gm8ROcW3c6OWjh7wN01nZdTyXVRexYtOUG023X25HP+BSKimA== -----END CERTIFICATE----- # 保存した証明書を信頼できるCAとして登録 $ sudo update-ca-trust extract
再度コマンドを実行してみます。
$ aws s3 ls \ --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com SSL validation failed for https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com/ [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1129)
エラーは変わらずといったところです。
curl
でアクセスすると証明書によるエラーは特に発生していませんでした。
$ curl -v https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com * Trying 10.0.9.75:443... * Connected to svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com (10.0.9.75) port 443 * ALPN: curl offers h2,http/1.1 * TLSv1.3 (OUT), TLS handshake, Client hello (1): * CAfile: /etc/pki/tls/certs/ca-bundle.crt * CApath: none * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384 * ALPN: server did not agree on a protocol. Uses default. * Server certificate: * subject: CN=svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com * start date: Nov 6 01:15:00 2023 GMT * expire date: Nov 9 01:15:00 2023 GMT * subjectAltName: host "svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com" matched cert's "svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com" * issuer: CN=svm_ca; C=US * SSL certificate verify ok. * using HTTP/1.x > GET / HTTP/1.1 > Host: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com > User-Agent: curl/8.3.0 > Accept: */* > < HTTP/1.1 403 Forbidden < Server: NetApp CSS/9.13.0P4 < Date: Mon, 06 Nov 2023 02:28:08 GMT < Connection: Close < Content-Length: 110 < Content-Type: application/xml < * Closing connection * TLSv1.2 (IN), TLS alert, close notify (256): * TLSv1.2 (OUT), TLS alert, close notify (256): <?xml version="1.0" encoding="UTF-8"?><Error><Code>AccessDenied</Code><Message>Access Denied</Message></Error>
AWS CLIは/etc/pki/tls/certs/ca-bundle.crt
を参照していないのでしょうか。
s3 ls
実行時に--ca-bundle
で明示的に証明書のパスを指定してあげます。
$ aws s3 ls \ --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \ --ca-bundle /usr/share/pki/ca-trust-source/anchors/svm_ca.pem 2023-11-05 09:41:02 ontap-s3-bucket
問題なく出力されました。
ファイルのアップロードができるか確認してみます。
# テキストファイルの作成 $ echo test-text > test-text.txt # テキストファイルのアップロード $ aws s3 cp test-text.txt s3://ontap-s3-bucket \ --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \ --ca-bundle /etc/pki/tls/certs/ca-bundle.crt upload: ./test-text.txt to s3://ontap-s3-bucket/test-text.txt # アップロードしたテキストファイルが存在することを確認 $ aws s3 ls s3://ontap-s3-bucket \ --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \ --ca-bundle /etc/pki/tls/certs/ca-bundle.crt 2023-11-06 01:31:26 10 test-text.txt # アップロードしたテキストファイルの内容確認 $ aws s3 cp s3://ontap-s3-bucket/test-text.txt \ --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \ --ca-bundle /etc/pki/tls/certs/ca-bundle.crt \ - test-text
問題なくできました。
また、このバケットではバージョニングを有効化しています。
削除しても削除マーカーが付与されて、古いバージョンとしてオブジェクトが残っていることを確認します。
# バージョニングされていることを確認 $ aws s3api list-object-versions \ --bucket ontap-s3-bucket \ --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \ --ca-bundle /etc/pki/tls/certs/ca-bundle.crt Versions: - ETag: 6af7520dcba2e60003c69b5671e84fb4 IsLatest: true Key: test-text.txt LastModified: '2023-11-06T01:31:26.786000+00:00' Size: 10 StorageClass: STANDARD VersionId: Nzg2MTQ5MDAwLnYxLjIuMTY5OTIzNDI4Ni4u # オブジェクトを削除 $ aws s3 rm s3://ontap-s3-bucket/test-text.txt \ --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \ --ca-bundle /etc/pki/tls/certs/ca-bundle.crt delete: s3://ontap-s3-bucket/test-text.txt # 削除マーカーが付与されたことを確認 $ aws s3api list-object-versions \ --bucket ontap-s3-bucket \ --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \ --ca-bundle /etc/pki/tls/certs/ca-bundle.crt DeleteMarkers: - IsLatest: true Key: test-text.txt LastModified: '2023-11-06T01:43:41.866000+00:00' VersionId: ODY2MjIyMDAwLnYxLjYuMTY5OTIzNTAyMS4u Versions: - ETag: 6af7520dcba2e60003c69b5671e84fb4 IsLatest: false Key: test-text.txt LastModified: '2023-11-06T01:31:26.786000+00:00' Size: 10 StorageClass: STANDARD VersionId: Nzg2MTQ5MDAwLnYxLjIuMTY5OTIzNDI4Ni4u
なお、通常のONTAP S3のS3バケットに関連付くボリュームを削除する際は、バケット内の全てのオブジェクトを削除してあげる必要があります。
全てのオブジェクトを削除せずにボリュームを削除しようとするとCannot delete the volume because it is associated with one or more object store buckets. Please delete all object store buckets associated with the volume, and try again.
とエラーが出力されます。
バージョニングを有効化している場合は削除マーカーを含めて全て削除してあげる必要があるため要注意です。
対象バケットの全てのバージョンを削除するのは以下コマンドで行えます。
$ aws s3api delete-objects \ --bucket ontap-s3-bucket \ --delete "$(aws s3api list-object-versions --bucket ontap-s3-bucket --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com --ca-bundle /etc/pki/tls/certs/ca-bundle.crt --output json | jq '.Versions + .DeleteMarkers | {Objects: map({Key, VersionId})}')" \ --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \ --ca-bundle /etc/pki/tls/certs/ca-bundle.crt Deleted: - Key: test-text.txt VersionId: NjU2ODk0MDAwLnYxLjIuMTY5OTIzNTU3MC4u - Key: test-text.txt VersionId: Nzg2MTQ5MDAwLnYxLjIuMTY5OTIzNDI4Ni4u - Key: test-text.txt VersionId: ODY2MjIyMDAwLnYxLjYuMTY5OTIzNTAyMS4u
Snapshotの取得やFlexCloneができないことも確認します。
# Snapshotの取得 ::> snapshot create -vserver svm -volume fg_oss_1699177255 -snapshot ontap_s3_snapshot Error: command failed: Unable to create Snapshot for object store volume "fg_oss_1699177255" on Vserver svm". # FlexCloneのボリューム作成 ::> volume clone create -vserver svm -flexclone fg_oss_1699177255_clone -type RW -parent-vserver svm fg_oss_1699177255 Error: command failed: Cannot create "flexClone" on volume "fg_oss_1699177255" in Vserver "svm", because the volume is used by an object store server.
どちらも「オブジェクトストアサーバーのボリュームであるため」という理由でエラーになっていますね。
Data DualityなONTAP S3のS3バケットを作成してみる
SMB共有の作成
次にData DualityなONTAP S3のS3バケットを作成してみます。
下準備としてマッピングするボリュームに対してSMB共有を作成します。
# SMBサーバーの作成 ::> cifs create -vserver svm -cifs-server smb-server -workgroup WORKGROUP Notice: SMB1 protocol version is obsolete and considered insecure. Therefore it is deprecated and disabled on this CIFS server. Support for SMB1 might be removed in a future release. If required, use the (privilege: advanced) "vserver cifs options modify -vserver svm -smb1-enabled true" to enable it. # 作成したSMBサーバーの確認 ::> cifs show Server Status Domain/Workgroup Authentication Vserver Name Admin Name Style ----------- --------------- --------- ---------------- -------------- svm SMB-SERVER up WORKGROUP workgroup # SMB共有の作成 ::> cifs share create -vserver svm -share-name share -path /vol1 # 作成したSMB共有の確認 ::> cifs share show Vserver Share Path Properties Comment ACL -------------- ------------- ----------------- ---------- -------- ----------- svm c$ / oplocks - BUILTIN\Administrators / Full Control browsable changenotify show-previous-versions svm ipc$ / browsable - - svm share /vol1 oplocks - Everyone / Full Control browsable changenotify show-previous-versions 3 entries were displayed.
ONTAP S3のユーザーとSMBユーザーのネームマッピング
続いてONTAP S3のユーザーとSMBユーザーのネームマッピングです。
まず、ネームマッピング用にSMBユーザーを作成します。
# SMBユーザーの作成 ::> cifs users-and-groups local-user create -vserver svm -user-name smb-user -is-account-disabled false Enter the password: Confirm the password: # 作成したSMBユーザーの確認 ::> cifs users-and-groups local-user show Vserver User Name Full Name Description ------------ --------------------------- -------------------- ------------- svm SMB-SERVER\Administrator Built-in administrator account svm SMB-SERVER\smb-user - - 2 entries were displayed.
S3ユーザーでアクセスしたときにSMBサーバーに変換して認可されるようにネームマッピングをします。
# ネームマッピングの作成 ::> name-mapping create -direction s3-win -position 1 -pattern s3-user -replacement SMB-SERVER\\smb-user (vserver name-mapping create) # ネームマッピングの確認 ::> name-mapping show (vserver name-mapping show) Vserver: svm Direction: s3-win Position Hostname IP Address/Mask -------- ---------------- ---------------- 1 - - Pattern: s3-user Replacement: SMB-SERVER\\smb-user ::> name-mapping show -instance (vserver name-mapping show) Vserver: svm Direction: s3-win Position: 1 Pattern: s3-user Replacement: SMB-SERVER\\smb-user IP Address with Subnet Mask: - Hostname: -
ONTAP S3のバケットの作成
ONTAP S3バケットを作成します。
作成する際にパスとしてSMB共有で指定したパスと同じものを指定します。
# ONTAP S3バケットの作成 ::> object-store-server bucket create -vserver svm -bucket ontap-nas-bucket -type nas -nas-path /vol1 (vserver object-store-server bucket create) # S3バケットの確認 ::> object-store-server bucket show -bucket ontap-nas-bucket -instance (vserver object-store-server bucket show) Vserver: svm Bucket :ontap-nas-bucket Type :nas Versioning :- Uuid :8402a992-7c46-11ee-aba3-3702a2258335 Volume :vol1 Size :- Logical Used Size :- Object Count :- Encryption :false Comment : Qos Policy Group :- Role :- Bucket Protected :- Bucket Protected On ONTAP :- Bucket Protected On Cloud :- Bucket Protected on External Cloud :- NAS Path :/vol1 Object Lock retention mode :-
動作確認
動作確認です。
s3 cp
でテキストファイルのアップロードができることを確認します。
$ aws s3 ls \ --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \ --ca-bundle /etc/pki/tls/certs/ca-bundle.crt 2023-11-06 01:47:59 ontap-nas-bucket 2023-11-05 09:41:02 ontap-s3-bucket $ aws s3 cp test-text.txt s3://ontap-nas-bucket \ --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \ --ca-bundle /etc/pki/tls/certs/ca-bundle.crt upload: ./test-text.txt to s3://ontap-nas-bucket/test-text.txt
SMBクライアントからSMB共有をマウントして、s3 cp
でアップロードされたテキストファイルを確認します。
# SMBでマウント > net use Z: \\svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com\share The password is invalid for \\svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com\share. Enter the user name for 'svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com': SMB-SERVER\smb-user Enter the password for svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com: The command completed successfully. # マウントできたことを確認 > Get-PSDrive -PSProvider FileSystem Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- C 15.52 14.48 FileSystem C:\ Users\Administrator Z 0.00 0.95 FileSystem \\svm-0093c4d58225f809b.fs-03e6b... # ONTAP S3のS3バケットにアップロードしたファイルが存在していることを確認 > ls Z:\ Directory: z:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 11/6/2023 1:55 AM 10 test-text.txt # ファイルの内容の表示 > cat Z:\test-text.txt test-text
問題なくできましたね。
データ分析の時に役立ちそう
Amazon FSx for NetApp ONTAPで、ONTAP S3 の マルチプロトコルアクセスを試してみました。
データ分析の時に役立ちそうですね。
現状、ONTAP S3とAWSの各サービスの親和性は正直高くないので、さまざまなサービスとの連携が進むと嬉しいですね。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!